package com.taijihuabao.modules.controller;

import com.github.pagehelper.PageInfo;
import com.taijihuabao.common.jsonresult.JsonResult;
import com.taijihuabao.modules.entity.RoleEntity;
import com.taijihuabao.modules.model.basedto.IdDTO;
import com.taijihuabao.modules.model.role.dto.RoleCrFromDTO;
import com.taijihuabao.modules.model.role.dto.RoleListFromDTO;
import com.taijihuabao.modules.model.role.dto.RoleUpFromDTO;
import com.taijihuabao.modules.model.role.vo.RoleInfoVO;
import com.taijihuabao.modules.service.RoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 角色管理
 *
 * @author changhui.tu
 */
@Api(tags = "角色管理")
@RestController
@RequestMapping("/api/v1/role")
public class RoleController {

    @Autowired
    private RoleService roleService;

    /**
     * 获取角色列表(带分页)
     *
     * @param listDTO
     * @return
     */
    @ApiOperation("角色列表")
    @GetMapping
    public JsonResult selectAllRole(RoleListFromDTO listDTO) {
        PageInfo<RoleEntity> pageInfo = roleService.selectAllRole(listDTO);
        return JsonResult.success(pageInfo);
    }

    /**
     * 获取所有角色
     *
     * @return
     */
    @ApiOperation("所有角色")
    @GetMapping("/seletor")
    public JsonResult selectRoles() {
        List<RoleEntity> data = roleService.selectRoles();
        return JsonResult.success(data);
    }

    /**
     * 通过Id获取信息
     *
     * @param dto
     * @return
     */
    @ApiOperation("角色信息")
    @GetMapping("/info")
    public JsonResult selectRoleById(IdDTO dto) {
        RoleInfoVO data = roleService.selectRoleById(dto);
        return JsonResult.success(data);
    }

    /**
     * 新增角色
     *
     * @param crFromDTO
     * @return
     */
    @ApiOperation("新增角色")
    @PostMapping
    public JsonResult insertRole(@RequestBody RoleCrFromDTO crFromDTO) {
        roleService.insertRole(crFromDTO);
        return JsonResult.success();
    }

    /**
     * 修改角色
     *
     * @param upFromDTO
     * @return
     */
    @ApiOperation("角色编辑")
    @PutMapping
    public JsonResult updateRole(@RequestBody RoleUpFromDTO upFromDTO) {
        roleService.updateRole(upFromDTO);
        return JsonResult.success();
    }

    /**
     * 删除角色
     *
     * @param dto
     * @return
     */
    @ApiOperation("角色删除")
    @DeleteMapping
    public JsonResult deleteRole(@RequestBody IdDTO dto) {
        roleService.deleteRole(dto);
        return JsonResult.success();
    }

}
